From 91bbe6ef9518e42904d08f9ec6acbaf62eda2387 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Wed, 24 Apr 2019 12:56:44 +0200 Subject: [PATCH] gl renderer: Sync gpu and cpu default alpha value Otherwise we might end up not passing the new value to the GPU. --- gsk/gl/gskglrenderer.c | 4 ++-- gsk/gl/gskglrenderops.c | 16 ++++++++++++++++ gsk/gl/gskglrenderopsprivate.h | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 1dafe4521e..1ee037feb7 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -2927,11 +2927,11 @@ gsk_gl_renderer_do_render (GskRenderer *renderer, gsk_gl_glyph_cache_begin_frame (&self->glyph_cache); gsk_gl_shadow_cache_begin_frame (&self->shadow_cache, self->gl_driver); - memset (&render_op_builder, 0, sizeof (render_op_builder)); + /* TODO: REALLY USE ONE BUILDER FOREVER! shader state is not per-frame... */ + ops_init (&render_op_builder); render_op_builder.renderer = self; render_op_builder.current_projection = projection; render_op_builder.current_viewport = *viewport; - render_op_builder.current_opacity = 1.0f; render_op_builder.render_ops = self->render_ops; ops_set_modelview (&render_op_builder, &modelview, scale_factor == 1 ? GSK_TRANSFORM_CATEGORY_IDENTITY : GSK_TRANSFORM_CATEGORY_2D_AFFINE); diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index beb94a5967..f4c887fa59 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -149,6 +149,22 @@ ops_transform_bounds_modelview (const RenderOpBuilder *builder, dst->origin.y += builder->dy * head->metadata.scale_y; } +void +ops_init (RenderOpBuilder *builder) +{ + int i; + + memset (builder, 0, sizeof (*builder)); + + builder->current_opacity = 1.0f; + + for (i = 0; i < GL_N_PROGRAMS; i ++) + { + builder->program_state[i].opacity = 1.0f; + } + +} + void ops_set_program (RenderOpBuilder *builder, const Program *program) diff --git a/gsk/gl/gskglrenderopsprivate.h b/gsk/gl/gskglrenderopsprivate.h index f54440aa30..a2608b7450 100644 --- a/gsk/gl/gskglrenderopsprivate.h +++ b/gsk/gl/gskglrenderopsprivate.h @@ -277,7 +277,7 @@ void ops_dump_framebuffer (RenderOpBuilder *builder, const char *filename, int width, int height); - +void ops_init (RenderOpBuilder *builder); void ops_finish (RenderOpBuilder *builder); void ops_push_modelview (RenderOpBuilder *builder, const graphene_matrix_t *mv, -- 2.30.2